//给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。 
//
// 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ，就返回 0。 
//假设环境不允许存储 64 位整数（有符号或无符号）。
//
// 
//
// 示例 1： 
//
// 
//输入：x = 123
//输出：321
// 
//
// 示例 2： 
//
// 
//输入：x = -123
//输出：-321
// 
//
// 示例 3： 
//
// 
//输入：x = 120
//输出：21
// 
//
// 示例 4： 
//
// 
//输入：x = 0
//输出：0
// 
//
// 
//
// 提示： 
//
// 
// -231 <= x <= 231 - 1 
// 
// Related Topics 数学


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int reverse(int x) {
        int result = 0;

        result = this.solution1(x);

        return result;
    }

    /**
     * 2021年10月21日
     * 常规思路，将数字转换成字符数组，手动逆序，再解析成数字，如果是负数则加上负号
     * 使用Integer.parseInt来实现32位的整数解析，如果解析失败，说明反转后超过了32位，则返回0
     *			解答成功:
     * 			执行耗时:3 ms,击败了13.58% 的Java用户
     * 			内存消耗:36.2 MB,击败了5.36% 的Java用户
     *
     * 评论：思路简单，性能差，没有含金量
     * @param x
     * @return
     */
    private int solution1(int x) {
        // 转负数为正数
        boolean minus = false;
        if (x < 0) {
            x *= -1;
            minus = true;
        }

        // 将数字转换成字符数组
        char[] chars = String.valueOf(x).toCharArray();

        // 逆序遍历数组，组装数字
        String reverse = "";
        for (int i = chars.length - 1; i >= 0; i--) {
            reverse += String.valueOf(chars[i]);
        }

        try {
            x = Integer.parseInt(reverse);
        } catch (NumberFormatException e) {
            return 0;
        }

        return minus ? -x : x;
    }
}
//leetcode submit region end(Prohibit modification and deletion)
